코딩테스트 연습 - 부족한 금액 계산하기 | 프로그래머스 스쿨 [ 템플릿 코드 ]
using namespace std;
long long solution(int price, int money, int count)
{
long long answer = -1;
return answer;
}[ 풀이 ]
using namespace std;
long long solution(int price, int money, int count)
{
long long totalPrice = (long long)price * count * (count + 1) / 2;
if (totalPrice <= money)
{
return 0;
}
return totalPrice - money;
}[ 해설 ]
using namespace std;
// 놀이기구의 이용료(price), 현재 가진 돈(money), 이용 횟수(count)를 받아
// 부족한 금액을 반환하는 함수
long long solution(int price, int money, int count)
{
// 1회 ~ count회까지의 총 이용 금액 계산
// 등차수열의 합 공식 사용
// price × (1 + 2 + ... + count)
// = price × count × (count + 1) / 2
// 금액이 커질 수 있으므로 long long으로 형변환
long long totalPrice = (long long)price * count * (count + 1) / 2;
// 총 이용 금액이 현재 가진 돈보다 작거나 같다면
// 추가로 필요한 금액이 없으므로 0 반환
if (totalPrice <= money)
{
return 0;
}
// 총 이용 금액이 가진 돈보다 크다면
// 부족한 금액(총 이용 금액 - 현재 가진 돈)을 반환
return totalPrice - money;
}[ 타 답안 ]
using namespace std;
// 놀이기구 1회 이용 가격(price)
// 현재 가진 돈(money)
// 총 이용 횟수(count)를 받아
// 부족한 금액을 반환하는 함수
long long solution(int price, int money, int count)
{
// 총 이용 금액을 저장할 변수
long long sum = 0;
// count번부터 1번까지 반복
// 각 이용 횟수에 해당하는 요금을 누적
for (int n = count; n > 0; n--)
sum += n * price;
// 총 이용 금액이 현재 가진 돈보다 많다면
// 부족한 금액을 반환
if (sum > money)
return sum - money;
else
// 가진 돈으로 충분하면 0 반환
return 0;
}